home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CHKBOOK.PAK / FXRECDOC.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  3KB  |  86 lines

  1. // fxrecdoc.h : interface of the CFixedLenRecDoc and CFixedLenRecHint classes
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. // CFixedLenRecDoc implements the behavior of a transaction-based
  14. // document in which each record has a fixed size.  The file has
  15. // a fixed-length header.  The derived class can specify the length
  16. // of an extra header, that is, a header in addition to that required
  17. // by CFixedLenRecDoc.  This is an abstract class that must be
  18. // derived from.
  19.  
  20. class CFixedLenRecHint : public CObject
  21. {
  22.     DECLARE_DYNAMIC(CFixedLenRecHint)
  23. public:
  24.     CFixedLenRecHint();
  25. };
  26.  
  27.  
  28. class CFixedLenRecDoc : public CDocument
  29. {
  30.     DECLARE_DYNAMIC(CFixedLenRecDoc)
  31. public:
  32.     CFixedLenRecDoc();
  33.  
  34. protected:
  35.  
  36.     CFile m_file;       // The file is kept open to do read/writes on per
  37.                         // transaction basis.
  38.  
  39.     // The following header, and optional extra header implemented
  40.     // in the derived class, are updated each time a new record is
  41.     // added, or WriteHeader() is called.
  42.  
  43.     struct
  44.     {
  45.         UINT nRecordCount;          // count of records in the file
  46.         UINT nRecordLength;         // length of fixed-length records
  47.         UINT nExtraHeaderLength;    // length of additional header written
  48.                                     // by derived class
  49.     } m_header;
  50.  
  51. // Overridables
  52.     virtual void* OnCreateNewRecord(int nNewRecordIndex) = 0;
  53.                                     // returns pointer to new record
  54.     virtual BOOL OnReadExtraHeader();
  55.     virtual void OnWriteExtraHeader(BOOL bNewHeader);
  56.  
  57. // Operations
  58. public:
  59.     virtual void WriteHeader(CFile* pFile, BOOL bNewHeader);
  60.     virtual BOOL ReadHeader(CFile* pFile);
  61.                                 // returns FALSE if file can't be interpreted
  62.  
  63.     // Operations used by views
  64.     virtual UINT CreateNewRecord(); // creates a new record
  65.     UINT GetRecordCount()
  66.         { return m_header.nRecordCount; }
  67.     virtual void GetRecord(UINT nRecordIndex, void* pRecord);
  68.     virtual void UpdateRecord(CView* pSourceView, UINT nRecordIndex,
  69.         void* pRecord);
  70.     virtual void UpdateAllViewsWithRecord(CView* pSourceView,
  71.         UINT nRecordIndex);
  72.  
  73. // Implementation
  74. protected:
  75.     // Overrides of CDocument member functions
  76.     virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
  77.                                     // reopen file using m_file
  78.     virtual void DeleteContents();  // closes the m_file
  79.  
  80.     virtual void FileSeekRecord(UINT nRecord);
  81.  
  82. public:
  83.     virtual ~CFixedLenRecDoc();
  84.     virtual void Serialize(CArchive& ar);
  85. };
  86.